package timing.ukulele.storage.entity;

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serializable;
import java.util.Date;

/**
 * 存储对象
 * 存储对象可为文件或文件夹，其权限仿照linux的权限管理方法，
 * R-预览(4)
 * D-下载(2)
 * V-可见(1)
 * 并且规定：
 * 只能删除自己的文件或者文件夹
 * 只能在自己的文件夹下上传文件
 */
@Document("node")
@Getter
@Setter
public class NodeEntity implements Serializable {
    @Id
    private String id;
    @Field("name")
    private String name;
    // 单位Byte
    @Field("size")
    private Long size;
    @Field("type")
    private String type;
    @Field("content_type")
    private String contentType;
    @Field("secret")
    private Boolean secret = false;
    @Field("parent_id")
    private String parentId = "0";
    //节点路径
    @Field("path")
    private String path;
    @Field("preview_path")
    private String previewPath;
    // 所属用户，也是桶名称
    @Field("owner")
    private String owner;
    // 创建人
    @Field("creator")
    private String creator;
    // 创建时间
    @Field("creat_time")
    private Date creatTime;
    // 用户权限 仿照linux的权限管理方法
    @Field("user_authority")
    private Short userAuthority = 7;
    // 组权限 仿照linux的权限管理方法
    @Field("group_authority")
    private Short groupAuthority = 0;
    // 其他人权限 仿照linux的权限管理方法
    @Field("other_authority")
    private Short otherAuthority = 0;
}
